// import "iconify-icon";
// import "../lit-comp/index.js";
// import "jquery";
// import "angular";
// import "systemjs";
import mountApp from "./bootstrap.mjs";

// - vite
// import tw from "./tw.pcss?inline" with { type: "css" };

// const twStyleSheet = new CSSStyleSheet();
// twStyleSheet.replaceSync(tw);

// - rspack
import twStyleSheet from "./tw.pcss" with { type: "css" };

// module-federation loader
withMocking().then(() => {
  document.adoptedStyleSheets = [twStyleSheet];
});
/* #__EFFECT__ */
// # Bootstrap Angular
// `ng-app` is trap
// jQuery("#app").attr("ng-app", "myApp");
// if (!window.__App__) {
//   try {
//     // void window.angular.bootstrap("#app", ["myApp"], { strictDi: true });
//   } catch {
//     // console.error("ng.bootstrap Failed");
//   }
// }
// document.addEventListener("error", (errEvent) => {
//   console.log("unhandled-rejection", errEvent);
// });
// @ts-expect-error
window.appSolidUrl = "http://localhost:7532";
mountApp().then(
  () => {
    // resumeBootstrap
    console.log("resumeBootstrap");
    window.__AppInjector__ = window.angular.resumeBootstrap?.();
  },
  (err) => {
    console.error("mountApp Failed", err);
  },
);

// Object.defineProperty(window, "jQuery", {
//   get() {
//     console.log("get jQuery");
//     // @ts-ignore
//     return window.$;
//   },
//   set(jQuery) {
//     console.log("set jQuery");
//     // @ts-ignore
//     window.$ = jQuery;
//   },
// });
// console.log("'use module-federation'");

// # case for webpack pragma
// VIA: https://webpack.js.org/api/module-methods#magic-comments
// import(
// /* webpackChunkName: "my-chunk-name" */
// /* webpackMode: "lazy" */
// /* webpackExports: ["default", "named"] */
// /* webpackFetchPriority: "high" */
//  "./bootstrap.mjs");

// #__DEV-ONLY__
/**
 * @returns {Promise<void>}
 */
async function withMocking() {
  // console.log("import.meta.filename", import.meta.filename);
  // if (import.meta.env.MSW) {
  //   const { worker } = await import("../mocks/browser.mjs");
  //   //  `worker.start()` returns a Promise that resolves
  //   //  once the Service Worker is up and ready to intercept requests.
  //   return worker.start();
  // }
}

// if (import.meta.webpackHot) {
// console.log("__webpack_exports_info__:",__webpack_exports_info__);
// console.log(":", import.meta.webpackContext('.\\bootstrap.mjs'));
// import.meta.webpackHot.accept();
//   // debugger
//   import.meta.webpackHot.accept(["@/bootstrap.mjs"],
//     (outdatedDependencies) => {
//       console.log("outdatedDependencies", outdatedDependencies);
//     // angular.reloadWithDebugInfo();
//   });
// }

// /**
//  * @param {number} x
//  */
// function curriedAdd(x) {
//   this.x = x;
//   console.log("L1", this);
//   /**
//    * @param {number} y
//    */
//   return function (y) {
//     this.y = y;
//     console.log("L2", this);
//     /**
//      * @param {number} z
//      */
//     return function (z) {
//       this.z = z;
//       console.log("L3", this);
//       return x + y + z;
//     };
//   };
// }
// // @ts-ignore -- JSOK
// const res = new new new curriedAdd(1)(2)(3);

if (import.meta.webpackHot) {
  import.meta.webpackHot.accept();
}
